package com.theorydance.esoperator.utils.impl;

import com.google.gson.Gson;
import com.theorydance.esoperator.utils.SerializableCodec;

import java.io.Serializable;
import java.nio.charset.StandardCharsets;

public class GsonSerializableCodec implements SerializableCodec {
    @Override
    public <T extends Serializable> byte[] serialize(T obj) {
        String json = new Gson().toJson(obj);
        return json.getBytes(StandardCharsets.UTF_8);
    }

    @Override
    public <T extends Serializable> T deserialize(byte[] bytes, Class<T> clazz) {
        String json = new String(bytes, StandardCharsets.UTF_8);
        T t = new Gson().fromJson(json, clazz);
        return t;
    }
}
